package Exception;
//工厂检查产品次品的设备，如果发现是次品就发出警告。编程模拟设备发现次品过程。
//编写一个产品类Product，有成员变量name和isDefect（是否次品），有get和set方法。
//编写一个Exception的子类DefectException，该子类message属性，
// 有构造方法DefectException() 将"次品"赋值给message成员，有toShow()方法输出message的值
//编写一个Machine类，该类的方法checkProduct(Product product)当发现参数product为次品时（product的 isDefect属性为true），将抛出DefectException异常对象。
//程序在主类的main方法中的try…catch语句的try部分让Machine类的实例调用checkProduct方法，如果发现次品就在try…catch语句的catch部分处理次品。

import java.util.Scanner;
class Machine{
    public void checkProduct(Product product) throws DefectException{
        if(product.getDefect()){
            DefectException de = new DefectException();
            throw new DefectException();
        }else {
            System.out.print(product.getName() + "不是次品!");
        }
    }
}
class DefectException extends Exception{
    private String message;
    DefectException(){
        this.message = "次品";
    }
    public void toShow(){
        System.out.print("次品!");
    }
}

class Product{
    private String name;
    private Boolean isDefect;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Boolean getDefect() {
        return isDefect;
    }

    public void setIsDefect(Boolean defect) {
        isDefect = defect;
    }
}
public class test06 {
    public static void main(String[] args) {
        Machine machine = new Machine();
        String name[] ;
        Scanner sc=new Scanner(System.in);
        name=sc.nextLine().split(" ");
        Product [] products = new Product[name.length]; //检查6件货物
        for(int i= 0;i<name.length;i++) {
            products[i] = new Product();
            if(i%2==0) {
                products[i].setIsDefect(false);
                products[i].setName(name[i]);
            }
            else {
                products[i].setIsDefect(true);
                products[i].setName(name[i]);
            }
        }
        for(int i= 0;i<products.length;i++) {
            try {
                machine.checkProduct(products[i]);
                System.out.println(products[i].getName()+"检查通过");
            }
            catch(DefectException e) {
                e.toShow();//【代码2】 //e调用toShow()方法
                System.out.println(products[i].getName()+"被禁止!");
            }
        }
    }
}


/* 将完整的Product类， DefectException类 和Machine类写在下面*/
